package uy.org.softtech.cssuite.web.controladores;

import javax.annotation.PostConstruct;
import org.apache.log4j.Logger;
import org.springframework.context.annotation.Configuration;
import org.springframework.jmx.export.annotation.ManagedResource;
import org.springframework.security.access.annotation.Secured;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import uy.org.softtech.cssuite.core.Controlador;

/**
 * Controlador encargado de renderizar el código HTML para los diferentes módulos de la aplicación.
 * 
 * @author fabian.lobo
 */
@Configuration
@Controller("controlador-modulos")
@ManagedResource(
	objectName = "cssuite:type=Controlador,name=ControladorModulos", 
	description = "Controlador encargado de renderizar el código HTML para los diferentes módulos de la aplicación.",
	log = true, logFile = "jmx.log", currencyTimeLimit = 15,
	persistPolicy = "OnUpdate", persistPeriod = 200
)
public class ControladorModulos extends Controlador {

	private Logger log = Logger.getLogger(getClass());
	
	/**
	 * Método para verificar que todos los parámetros han sido seteados correctamente.
	 * 
	 * @author fabian.lobo
	 */
	@PostConstruct
	public void inicializacion(){
		super.inicializacion();
		
		log.info("Controlador encargado de renderizar el código HTML para los diferentes módulos de la aplicación ha sido inicializado.");
	}
	
	/* 
	 * ---------------------------------------
	 * ----------    SESIONES    -------------
	 * ---------------------------------------
	 */
	/**
	 * Lista las sesiones activas.
	 * 
	 * @author fabian.lobo
	 */
	@RequestMapping(method = RequestMethod.GET, value = "modulo.do", params = {"modulo=SESIONES", "accion=LISTAR"})
	@Secured(value = {"ROLE_VER_SESIONES"})
	public String sesiones() {
		return "modulos/sesiones";
	}
	
	/* 
	 * ---------------------------------------
	 * ----------    USUARIOS    -------------
	 * ---------------------------------------
	 */
	/**
	 * Lista los usuarios existentes.
	 * 
	 * @author fabian.lobo
	 */
	@RequestMapping(method = RequestMethod.GET, value = "modulo.do", params = {"modulo=USUARIOS", "accion=LISTAR"})
	@Secured(value = {"ROLE_VER_USUARIOS"})
	public String usuarios() {
		return "modulos/usuarios";
	}
	
	/* 
	 * ---------------------------------------
	 * ----------     TAREAS     -------------
	 * ---------------------------------------
	 */
	/**
	 * Lista las tareas programadas existentes.
	 * 
	 * @author fabian.lobo
	 */
	@RequestMapping(method = RequestMethod.GET, value = "modulo.do", params = {"modulo=TAREAS", "accion=LISTAR"})
	@Secured(value = {"ROLE_VER_TAREAS"})
	public String tareas() {
		return "modulos/tareas";
	}
	
	/* 
	 * ---------------------------------------
	 * ----------    CLIENTES    -------------
	 * ---------------------------------------
	 */
	/**
	 * Lista los clientes registrados.
	 * 
	 * @author fabian.lobo
	 */
	@RequestMapping(method = RequestMethod.GET, value = "modulo.do", params = {"modulo=CLIENTES", "accion=LISTAR"})
	@Secured(value = {"ROLE_VER_CLIENTES"})
	public String clientes() {
		return "modulos/clientes";
	}

}
